class ZtIMStrategy {
  bool? isMatchCallFree;
  int? initTab;
  bool? isShowMatchGender;
  GenderMatchCoin? genderMatchCoin;
  bool? isReviewPkg;
  bool? isShowLP;
  int? lpDiscount;
  int? lpPromotionDiscount;
  List<String>? payChannels;
  bool? isMaskOpen;
  bool? isShowBroadcasterRank;
  bool? isAutoAccept;
  List<String>? broadcasterWallTags;
  int? tabType;
  bool? isOpenBroacasterInvitation;
  bool? isOpenFlashChat;
  List<String>? videoStreamCategory;
  FlashChatConfig? flashChatConfig;
  bool? isShowMatch;
  bool? isNewTppUsable;
  UserInvitation? userInvitation;
  List<String>? topOfficialUserIds;
  List<String>? reviewOfficialBlacklistUserIds;
  List<String>? officialBlacklistUserIds;
  List<String>? imIncentiveBlacklistUserIds;
  List<String>? broadcasterFollowOfficialUserIds;
  bool? isDisplayNotDisturbCall;
  bool? isDisplayNotDisturbIm;
  int? imSessionBalance;
  bool? isShowFlowInfo;
  bool? isShowDeletedButton;
  List<BroadcasterWallTagList>? broadcasterWallTagList;
  String? freeUserCallStaySecond;
  String? freeUserImStaySecond;
  String? rechargeUserCallStaySecond;
  String? rechargeUserImStaySecond;
  bool? isRandomUploadPaidEvents;
  bool? isSwitchIMLimit;
  bool? isSwitchOneKeyFollow;
  bool? isSwitchIMIncentive;
  bool? isSwitchClub;
  bool? isShowRookieGuide;
  bool? isSwitchStrongGuide;
  bool? isCallRearCamera;
  bool? isCallCameraClose;
  bool? isShowAutoTranslate;
  bool? isSilence;
  bool? isRearCamera;
  bool? isCloseCamera;
  bool? isSwitchInstruct;
  bool? isForceEvaluationInstruct;
  bool? isSwitchExtraCategory;
  bool? isSwitchMultipleCall;
  String? timestamp;
  int? sayHiMaxCount;
  List<String>? sayHiQuickPhrases;
  String? userServiceAccountId;
  List<String>? broadcasterWallRegions;
  int? userMultipleLevel;
  bool? isReportFB;
  bool? isEnableGuardian;
  bool? isEnableCallCard;
  bool? isOpenSpeechToText;
  VoiceToTextConfig? voiceToTextConfig;
  bool? isEnableGroupSend;
  int? newRelationMsgSizeLimit;
  int? unansweredGreetingExpireTTLHour;
  bool? isOpenFlashChatOnRole;
  String? broadcasterOnlineButton;
  String? indianWallUnlock;
  List<String>? imSessionBroadcasterIds;

  ZtIMStrategy(
      {this.isMatchCallFree,
      this.initTab,
      this.isShowMatchGender,
      this.genderMatchCoin,
      this.isReviewPkg,
      this.isShowLP,
      this.lpDiscount,
      this.lpPromotionDiscount,
      this.payChannels,
      this.isMaskOpen,
      this.isShowBroadcasterRank,
      this.isAutoAccept,
      this.broadcasterWallTags,
      this.tabType,
      this.isOpenBroacasterInvitation,
      this.isOpenFlashChat,
      this.videoStreamCategory,
      this.flashChatConfig,
      this.isShowMatch,
      this.isNewTppUsable,
      this.userInvitation,
      this.topOfficialUserIds,
      this.reviewOfficialBlacklistUserIds,
      this.officialBlacklistUserIds,
      this.imIncentiveBlacklistUserIds,
      this.broadcasterFollowOfficialUserIds,
      this.isDisplayNotDisturbCall,
      this.isDisplayNotDisturbIm,
      this.imSessionBalance,
      this.isShowFlowInfo,
      this.isShowDeletedButton,
      this.broadcasterWallTagList,
      this.freeUserCallStaySecond,
      this.freeUserImStaySecond,
      this.rechargeUserCallStaySecond,
      this.rechargeUserImStaySecond,
      this.isRandomUploadPaidEvents,
      this.isSwitchIMLimit,
      this.isSwitchOneKeyFollow,
      this.isSwitchIMIncentive,
      this.isSwitchClub,
      this.isShowRookieGuide,
      this.isSwitchStrongGuide,
      this.isCallRearCamera,
      this.isCallCameraClose,
      this.isShowAutoTranslate,
      this.isSilence,
      this.isRearCamera,
      this.isCloseCamera,
      this.isSwitchInstruct,
      this.isForceEvaluationInstruct,
      this.isSwitchExtraCategory,
      this.isSwitchMultipleCall,
      this.timestamp,
      this.sayHiMaxCount,
      this.sayHiQuickPhrases,
      this.userServiceAccountId,
      this.broadcasterWallRegions,
      this.userMultipleLevel,
      this.isReportFB,
      this.isEnableGuardian,
      this.isEnableCallCard,
      this.isOpenSpeechToText,
      this.voiceToTextConfig,
      this.isEnableGroupSend,
      this.newRelationMsgSizeLimit,
      this.unansweredGreetingExpireTTLHour,
      this.isOpenFlashChatOnRole,
      this.broadcasterOnlineButton,
      this.indianWallUnlock,
      this.imSessionBroadcasterIds});

  ZtIMStrategy.fromJson(Map<String, dynamic> json) {
    isMatchCallFree = json['isMatchCallFree'];
    initTab = json['initTab'];
    isShowMatchGender = json['isShowMatchGender'];
    genderMatchCoin = json['genderMatchCoin'] != null
        ? new GenderMatchCoin.fromJson(json['genderMatchCoin'])
        : null;
    isReviewPkg = json['isReviewPkg'];
    isShowLP = json['isShowLP'];
    lpDiscount = json['lpDiscount'];
    lpPromotionDiscount = json['lpPromotionDiscount'];
    payChannels = json['payChannels'].cast<String>();
    isMaskOpen = json['isMaskOpen'];
    isShowBroadcasterRank = json['isShowBroadcasterRank'];
    isAutoAccept = json['isAutoAccept'];
    broadcasterWallTags = json['broadcasterWallTags'].cast<String>();
    tabType = json['tabType'];
    isOpenBroacasterInvitation = json['isOpenBroacasterInvitation'];
    isOpenFlashChat = json['isOpenFlashChat'];
    videoStreamCategory = json['videoStreamCategory'].cast<String>();
    flashChatConfig = json['flashChatConfig'] != null
        ? new FlashChatConfig.fromJson(json['flashChatConfig'])
        : null;
    isShowMatch = json['isShowMatch'];
    isNewTppUsable = json['isNewTppUsable'];
    userInvitation = json['userInvitation'] != null
        ? new UserInvitation.fromJson(json['userInvitation'])
        : null;
    topOfficialUserIds = json['topOfficialUserIds'].cast<String>();
    reviewOfficialBlacklistUserIds =
        json['reviewOfficialBlacklistUserIds'].cast<String>();
    officialBlacklistUserIds = json['officialBlacklistUserIds'].cast<String>();
    imIncentiveBlacklistUserIds =
        json['imIncentiveBlacklistUserIds'].cast<String>();
    broadcasterFollowOfficialUserIds =
        json['broadcasterFollowOfficialUserIds'].cast<String>();
    isDisplayNotDisturbCall = json['isDisplayNotDisturbCall'];
    isDisplayNotDisturbIm = json['isDisplayNotDisturbIm'];
    imSessionBalance = json['imSessionBalance'];
    isShowFlowInfo = json['isShowFlowInfo'];
    isShowDeletedButton = json['isShowDeletedButton'];
    if (json['broadcasterWallTagList'] != null) {
      broadcasterWallTagList = <BroadcasterWallTagList>[];
      json['broadcasterWallTagList'].forEach((v) {
        broadcasterWallTagList!.add(new BroadcasterWallTagList.fromJson(v));
      });
    }
    freeUserCallStaySecond = json['freeUserCallStaySecond'];
    freeUserImStaySecond = json['freeUserImStaySecond'];
    rechargeUserCallStaySecond = json['rechargeUserCallStaySecond'];
    rechargeUserImStaySecond = json['rechargeUserImStaySecond'];
    isRandomUploadPaidEvents = json['isRandomUploadPaidEvents'];
    isSwitchIMLimit = json['isSwitchIMLimit'];
    isSwitchOneKeyFollow = json['isSwitchOneKeyFollow'];
    isSwitchIMIncentive = json['isSwitchIMIncentive'];
    isSwitchClub = json['isSwitchClub'];
    isShowRookieGuide = json['isShowRookieGuide'];
    isSwitchStrongGuide = json['isSwitchStrongGuide'];
    isCallRearCamera = json['isCallRearCamera'];
    isCallCameraClose = json['isCallCameraClose'];
    isShowAutoTranslate = json['isShowAutoTranslate'];
    isSilence = json['isSilence'];
    isRearCamera = json['isRearCamera'];
    isCloseCamera = json['isCloseCamera'];
    isSwitchInstruct = json['isSwitchInstruct'];
    isForceEvaluationInstruct = json['isForceEvaluationInstruct'];
    isSwitchExtraCategory = json['isSwitchExtraCategory'];
    isSwitchMultipleCall = json['isSwitchMultipleCall'];
    timestamp = json['timestamp'];
    sayHiMaxCount = json['sayHiMaxCount'];
    sayHiQuickPhrases = json['sayHiQuickPhrases'].cast<String>();
    userServiceAccountId = json['userServiceAccountId'];
    broadcasterWallRegions = json['broadcasterWallRegions'].cast<String>();
    userMultipleLevel = json['userMultipleLevel'];
    isReportFB = json['isReportFB'];
    isEnableGuardian = json['isEnableGuardian'];
    isEnableCallCard = json['isEnableCallCard'];
    isOpenSpeechToText = json['isOpenSpeechToText'];
    voiceToTextConfig = json['voiceToTextConfig'] != null
        ? new VoiceToTextConfig.fromJson(json['voiceToTextConfig'])
        : null;
    isEnableGroupSend = json['isEnableGroupSend'];
    newRelationMsgSizeLimit = json['newRelationMsgSizeLimit'];
    unansweredGreetingExpireTTLHour = json['unansweredGreetingExpireTTLHour'];
    isOpenFlashChatOnRole = json['isOpenFlashChatOnRole'];
    broadcasterOnlineButton = json['broadcasterOnlineButton'];
    indianWallUnlock = json['indianWallUnlock'];
    imSessionBroadcasterIds = json['imSessionBroadcasterIds'].cast<String>();
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['isMatchCallFree'] = this.isMatchCallFree;
    data['initTab'] = this.initTab;
    data['isShowMatchGender'] = this.isShowMatchGender;
    if (this.genderMatchCoin != null) {
      data['genderMatchCoin'] = this.genderMatchCoin!.toJson();
    }
    data['isReviewPkg'] = this.isReviewPkg;
    data['isShowLP'] = this.isShowLP;
    data['lpDiscount'] = this.lpDiscount;
    data['lpPromotionDiscount'] = this.lpPromotionDiscount;
    data['payChannels'] = this.payChannels;
    data['isMaskOpen'] = this.isMaskOpen;
    data['isShowBroadcasterRank'] = this.isShowBroadcasterRank;
    data['isAutoAccept'] = this.isAutoAccept;
    data['broadcasterWallTags'] = this.broadcasterWallTags;
    data['tabType'] = this.tabType;
    data['isOpenBroacasterInvitation'] = this.isOpenBroacasterInvitation;
    data['isOpenFlashChat'] = this.isOpenFlashChat;
    data['videoStreamCategory'] = this.videoStreamCategory;
    if (this.flashChatConfig != null) {
      data['flashChatConfig'] = this.flashChatConfig!.toJson();
    }
    data['isShowMatch'] = this.isShowMatch;
    data['isNewTppUsable'] = this.isNewTppUsable;
    if (this.userInvitation != null) {
      data['userInvitation'] = this.userInvitation!.toJson();
    }
    data['topOfficialUserIds'] = this.topOfficialUserIds;
    data['reviewOfficialBlacklistUserIds'] =
        this.reviewOfficialBlacklistUserIds;
    data['officialBlacklistUserIds'] = this.officialBlacklistUserIds;
    data['imIncentiveBlacklistUserIds'] = this.imIncentiveBlacklistUserIds;
    data['broadcasterFollowOfficialUserIds'] =
        this.broadcasterFollowOfficialUserIds;
    data['isDisplayNotDisturbCall'] = this.isDisplayNotDisturbCall;
    data['isDisplayNotDisturbIm'] = this.isDisplayNotDisturbIm;
    data['imSessionBalance'] = this.imSessionBalance;
    data['isShowFlowInfo'] = this.isShowFlowInfo;
    data['isShowDeletedButton'] = this.isShowDeletedButton;
    if (this.broadcasterWallTagList != null) {
      data['broadcasterWallTagList'] =
          this.broadcasterWallTagList!.map((v) => v.toJson()).toList();
    }
    data['freeUserCallStaySecond'] = this.freeUserCallStaySecond;
    data['freeUserImStaySecond'] = this.freeUserImStaySecond;
    data['rechargeUserCallStaySecond'] = this.rechargeUserCallStaySecond;
    data['rechargeUserImStaySecond'] = this.rechargeUserImStaySecond;
    data['isRandomUploadPaidEvents'] = this.isRandomUploadPaidEvents;
    data['isSwitchIMLimit'] = this.isSwitchIMLimit;
    data['isSwitchOneKeyFollow'] = this.isSwitchOneKeyFollow;
    data['isSwitchIMIncentive'] = this.isSwitchIMIncentive;
    data['isSwitchClub'] = this.isSwitchClub;
    data['isShowRookieGuide'] = this.isShowRookieGuide;
    data['isSwitchStrongGuide'] = this.isSwitchStrongGuide;
    data['isCallRearCamera'] = this.isCallRearCamera;
    data['isCallCameraClose'] = this.isCallCameraClose;
    data['isShowAutoTranslate'] = this.isShowAutoTranslate;
    data['isSilence'] = this.isSilence;
    data['isRearCamera'] = this.isRearCamera;
    data['isCloseCamera'] = this.isCloseCamera;
    data['isSwitchInstruct'] = this.isSwitchInstruct;
    data['isForceEvaluationInstruct'] = this.isForceEvaluationInstruct;
    data['isSwitchExtraCategory'] = this.isSwitchExtraCategory;
    data['isSwitchMultipleCall'] = this.isSwitchMultipleCall;
    data['timestamp'] = this.timestamp;
    data['sayHiMaxCount'] = this.sayHiMaxCount;
    data['sayHiQuickPhrases'] = this.sayHiQuickPhrases;
    data['userServiceAccountId'] = this.userServiceAccountId;
    data['broadcasterWallRegions'] = this.broadcasterWallRegions;
    data['userMultipleLevel'] = this.userMultipleLevel;
    data['isReportFB'] = this.isReportFB;
    data['isEnableGuardian'] = this.isEnableGuardian;
    data['isEnableCallCard'] = this.isEnableCallCard;
    data['isOpenSpeechToText'] = this.isOpenSpeechToText;
    if (this.voiceToTextConfig != null) {
      data['voiceToTextConfig'] = this.voiceToTextConfig!.toJson();
    }
    data['isEnableGroupSend'] = this.isEnableGroupSend;
    data['newRelationMsgSizeLimit'] = this.newRelationMsgSizeLimit;
    data['unansweredGreetingExpireTTLHour'] =
        this.unansweredGreetingExpireTTLHour;
    data['isOpenFlashChatOnRole'] = this.isOpenFlashChatOnRole;
    data['broadcasterOnlineButton'] = this.broadcasterOnlineButton;
    data['indianWallUnlock'] = this.indianWallUnlock;
    data['imSessionBroadcasterIds'] = this.imSessionBroadcasterIds;
    return data;
  }
}

class GenderMatchCoin {
  int? maleCoins;
  int? femaleCoins;
  int? bothCoins;
  int? vipGoddessCoins;
  int? goddessCoins;

  GenderMatchCoin(
      {this.maleCoins,
      this.femaleCoins,
      this.bothCoins,
      this.vipGoddessCoins,
      this.goddessCoins});

  GenderMatchCoin.fromJson(Map<String, dynamic> json) {
    maleCoins = json['maleCoins'];
    femaleCoins = json['femaleCoins'];
    bothCoins = json['bothCoins'];
    vipGoddessCoins = json['vipGoddessCoins'];
    goddessCoins = json['goddessCoins'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['maleCoins'] = this.maleCoins;
    data['femaleCoins'] = this.femaleCoins;
    data['bothCoins'] = this.bothCoins;
    data['vipGoddessCoins'] = this.vipGoddessCoins;
    data['goddessCoins'] = this.goddessCoins;
    return data;
  }
}

class FlashChatConfig {
  bool? isSwitch;
  bool? isFreeCall;
  int? residueFreeCallTimes;

  FlashChatConfig({this.isSwitch, this.isFreeCall, this.residueFreeCallTimes});

  FlashChatConfig.fromJson(Map<String, dynamic> json) {
    isSwitch = json['isSwitch'];
    isFreeCall = json['isFreeCall'];
    residueFreeCallTimes = json['residueFreeCallTimes'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['isSwitch'] = this.isSwitch;
    data['isFreeCall'] = this.isFreeCall;
    data['residueFreeCallTimes'] = this.residueFreeCallTimes;
    return data;
  }
}

class UserInvitation {
  String? tipsTitle;
  String? tipsContent;
  String? popUpTitle;
  String? popUpContent;
  String? popUpBottom;
  String? shareContent;

  UserInvitation(
      {this.tipsTitle,
      this.tipsContent,
      this.popUpTitle,
      this.popUpContent,
      this.popUpBottom,
      this.shareContent});

  UserInvitation.fromJson(Map<String, dynamic> json) {
    tipsTitle = json['tipsTitle'];
    tipsContent = json['tipsContent'];
    popUpTitle = json['popUpTitle'];
    popUpContent = json['popUpContent'];
    popUpBottom = json['popUpBottom'];
    shareContent = json['shareContent'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['tipsTitle'] = this.tipsTitle;
    data['tipsContent'] = this.tipsContent;
    data['popUpTitle'] = this.popUpTitle;
    data['popUpContent'] = this.popUpContent;
    data['popUpBottom'] = this.popUpBottom;
    data['shareContent'] = this.shareContent;
    return data;
  }
}

class BroadcasterWallTagList {
  String? tagName;
  List<String>? subTagList;
  int? subTagInitIndex;

  BroadcasterWallTagList({this.tagName, this.subTagList, this.subTagInitIndex});

  BroadcasterWallTagList.fromJson(Map<String, dynamic> json) {
    tagName = json['tagName'];
    subTagList = json['subTagList'].cast<String>();
    subTagInitIndex = json['subTagInitIndex'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['tagName'] = this.tagName;
    data['subTagList'] = this.subTagList;
    data['subTagInitIndex'] = this.subTagInitIndex;
    return data;
  }
}

class VoiceToTextConfig {
  bool? voiceToTextSwitch;
  int? voiceToTextUnitPrice;

  VoiceToTextConfig({this.voiceToTextSwitch, this.voiceToTextUnitPrice});

  VoiceToTextConfig.fromJson(Map<String, dynamic> json) {
    voiceToTextSwitch = json['voiceToTextSwitch'];
    voiceToTextUnitPrice = json['voiceToTextUnitPrice'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['voiceToTextSwitch'] = this.voiceToTextSwitch;
    data['voiceToTextUnitPrice'] = this.voiceToTextUnitPrice;
    return data;
  }
}
